home *** CD-ROM | disk | FTP | other *** search
/ PC Electronics Plus 3 / PC Electronics Plus 3.iso / coil01 / tables.c < prev    next >
C/C++ Source or Header  |  1992-12-21  |  3KB  |  150 lines

  1. /* Compute and print out various engineering handbook tables
  2.  */
  3.  
  4. #define fabs(x) ( (x) < 0 ? -(x) : (x) )
  5.  
  6. extern double MACHEP, MAXNUM;
  7. extern double Kn, Kp, P, kl;
  8. double sqrt(), log(), pow(), sin(), cos(), atan();
  9. double ellpe(), ellpk(), chbevl();
  10. double rsol(), lyle(), dwighta(), dwightb(), butterw();
  11. double lyle2(), spielrein(), nagaoka();
  12.  
  13.  
  14.  
  15. main()
  16. {
  17. double a, b, c, N, L, q;
  18. long i;
  19. int j;
  20.  
  21. N = 1.0;
  22.  
  23. /* Print Nagaoka's table */
  24. printf( "Values of Nagaoka's Constant K for Circular Solenoidal Current Sheet\n" );
  25. printf( " L = 2e-9 pi^2 (2a/b) N^2 a K  henrys\n" );
  26. printf( " a = radius, b = length\n\n" );
  27. printf( "2a/b   K\n\n" );
  28. b = 2.0;
  29. a = 0.0;
  30. i = 0.0;
  31. while( i <= 40000L )
  32.     {
  33.     a = 0.01 * i;
  34.     L = nagaoka( a, b, N );
  35.     printf( "%4.2lf %7.5lf\n", a, Kn );
  36.     if( i >= 10000L )
  37.         {
  38.         i += 10000L;
  39.         continue;
  40.         }
  41.     if( i >= 4000 )
  42.         {
  43.         i += 1000;
  44.         continue;
  45.         }
  46.     if( i >= 2000 )
  47.         {
  48.         i += 200;
  49.         continue;
  50.         }
  51.     if( i >= 500 )
  52.         {
  53.         i += 50;
  54.         continue;
  55.         }
  56.     if( i >= 200 )
  57.         {
  58.         i += 10;
  59.         continue;
  60.         }
  61.     if( i >= 100 )
  62.         {
  63.         i += 5;
  64.         continue;
  65.         }
  66.     i += 1;
  67.     }
  68.  
  69. printf( "\n\n\n" );
  70. printf( "Grover's Table of K\' for Circular Coils of Rectangular Cross Section\n" );
  71. printf( " a = mean radius, b = length, c = winding thickness\n" );
  72. printf( " L = 2e-9 pi^2 (2a/b) N^2 a K\'  henrys\n\n" );
  73. a = 0.5;
  74. c = 0.025;
  75. i = 25;
  76. while( c < 1.0 )
  77. while( i <= 1000 )
  78. {
  79. c = 0.001 * i;
  80. printf( "       c/2a = %.3lf\n", c );
  81. printf( "b/c = 0, .1, .2, ..., 1.0\n" );
  82. for( j=0; j<=10; j++ )
  83.     {
  84.     q = 0.1 * j;
  85.     b = q * c;
  86.     L = rsol( a, b, c, N );
  87.     printf( "%6.4lf ", Kp );
  88.     }
  89. printf( "\n" );
  90. printf( "c/b = 0, .1, .2, ..., 1.0\n" );
  91. for( j=0; j<=10; j++ )
  92.     {  /* c/b = q */
  93.     q = 0.1 * j;
  94.     if( q == 0.0 )
  95.         b = 9.9e5*c;
  96.     else
  97.         b = c/q;
  98.     L = rsol( a, b, c, N );
  99.     printf( "%6.4lf ", Kp );
  100.     }
  101. printf( "\n" );
  102. if( i == 25 )
  103.     {
  104.     i = 50;
  105.     }
  106. else
  107.     {
  108.     if( i == 50 )
  109.         i = 100;
  110.     else
  111.         i += 100;
  112.     }
  113. }
  114.  
  115. printf( "\n\n\n" );
  116. printf( "Grover's Table of P for Flat Disk Coils\n" );
  117. printf( " L = 1e-9 N^2 a P  henrys\n\n" );
  118. printf( "  c/2a   P\n" );
  119. a = 0.5;
  120. b = 0.0;
  121. i = 1;
  122. N = 1.0;
  123. while( i <= 100L )
  124.     {
  125.     c = 0.01 * i;
  126.     L = rsol( a, b, c, N );
  127.     printf( "%4.2lf %7.3lf\n", c, P );
  128.     i += 1;
  129.     }
  130.  
  131.  
  132. printf( "\n\n\n" );
  133. printf( "Grover's Table of P for Circular Coils of Square Cross Section\n" );
  134. printf( " b = c\n" );
  135. printf( " L = 1e-9 N^2 a P  henrys\n\n" );
  136. printf( "  c/2a   P\n" );
  137. a = 0.5;
  138. i = 1;
  139. N = 1.0;
  140. while( i <= 100L )
  141.     {
  142.     c = 0.01 * i;
  143.     b = c;
  144.     L = rsol( a, b, c, N );
  145.     printf( "%4.2lf %7.3lf\n", c, P );
  146.     i += 1;
  147.     }
  148. }
  149.  
  150.